class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int n=nums.size();
        //dp[i]:子数组必须以i位置的数字作为结尾，往左能衍生出来最大累加和
        vector<int>dp(n);//初始化成n个0
        int ans=nums[0];
        dp[0]=nums[0];
        for(int i=1;i<n;i++){
            dp[i]=max(nums[i],dp[i-1]+nums[i]);
            ans=max(ans,dp[i]);
        }
        return ans;
    }
};